# coding=UTF-8

from flask import Flask
from flask_sqlalchemy import SQLAlchemy
import redis
#CSRFProtect来校验前端和服务器中的csrf_token是否一致
from flask_wtf import CSRFProtect
from flask import session
from flask_session import Session
from flask_script import Manager
from flask_migrate import  Migrate,MigrateCommand

#所有环境配置
class Config(object):
    #之前的调试模式放这里了,如果环境不是全部放在类里而是散放的话，每一个配置就要DEBUG = True，那就不如放在run里面了
    DEBUG = True

    #SQLAlchemy数据库环境配置
    SQLALCHEMY_DATABASE_URI = "mysql://root:mysql@127.0.0.1:3306/ihome"
    SQLALCHEMY_TRACK_MODIFICATIONS = False

    #redis配置
    REDIS_HOST = '127.0.0.1'
    REDIS_PORT = 6379

    # Session 扩展的配置
    SESSION_TYPE = "redis"  # 存储类型有'redis'/'memcached'/'filesystem'/'mongodb'/'sqlalchemy',进入Session源码 _get_interface函数看
    SESSION_REDIS = redis.StrictRedis(host=REDIS_HOST, port=REDIS_PORT)  # redis的链接
    SESSION_USE_SIGNER = True  # 是否加密签名
    PERMANENT_SESSION_LIFETIME = 86400  # 生命周期１天

    #secrit_key设置
    '''
    进入ipython,import os
    u = os.urandom(48)
    u
    import base64
    base64.b64encode(u)
    '''
    SECRET_KEY = 'oEPpkEKnW5WOZRuPygpQeuinnoKzyCX02Q/8PG07Po8gjrWTOcfQf6WMqqVQXOm0'


app = Flask(__name__)
#通过对象加载配置
'''
此外有：
#单个配置   app.config['DEBUG']=True
#通过配置文件加载配置　　app.config.from_pyfile('MyConfig.cfg')
'''
app.config.from_object(Config)
#初始化SQLAlchemy
db = SQLAlchemy(app)
#初始化，之后进行注册
redis_store = redis.StrictRedis(host=Config.REDIS_HOST, port=Config.REDIS_PORT)
#集成CSRF保护：提供了校验cookie中的csrf和表单中提交过来的csrf的是否一样
csrf = CSRFProtect(app)
#集成session,返回值用不上就不用变量接收了
Session(app)
manager = Manager(app)
# 集成数据库迁移
Migrate(app, db)
manager.add_command('db', MigrateCommand)

@app.route('/')
def index():
    session['name'] ='xiaohua'
    #redis注册
    redis_store.set('name','xiaomei')
    #session设置
    return '/index'


if __name__ == '__main__':
    #app.run()
    manager.run()


'''
步骤：
第一步：cd Desktop/iHome
第二步：方法一：终端：　git init  # 表示当前文件夹已经让git管理起来了
第三步：忽略上传.idea文件
　　创建Directory-命名为.gitignore-写上.idea/(这时候再git status查看就没有idea了）
　　－换行再加上*.py[cod]，表示以pyc/pyo/pyd的文件都忽略掉
第四步：
　　　方法一：终端：　　git add .　　　　
                    git commit -m'名称'
　　　方法二：pycharm: VCS－git-add
                     ctrl+ｋ快捷键进入-commit message 处填上项目描述之后commit

第五步：设置pycharm，能够在文件修改时候显示颜色
　　　settings-Version Control－选中以后点击加号添加
第六步：注册码云创建项目；
　　　　复制https到VCS－git-remotes粘贴https，name不用改；
       输入码云的账号和密码并点击OK
       （一劳永逸办法：终端输入git config --global user.name "晃晃精"
        git config --global user.email "692512069@qq.com"）
第七步：VCS -> Git -> Push
　　　　Push 成功之后 Pycharm 弹出的提示
　　　　去码云上刷新当前项目查看Push结果-完成
'''